Open platform computers allow the addition of hardware cards to a computer bus in a computer which provides additional functionality to the computer. These cards can take the form of a video card, a LAN interface card, a telephony interface card, etc. Most common buses use address space as the mechanism to distinguish when a particular computer card is being selected. For example, when computer software requires some video function to be performed, the software is connected to the video card through a specific address range. Typically, each board is assigned a unique address space, usually to a traditional address location, such as the traditional location for video cards or the traditional location for disk drive interface cards.
Usually, the computer bus does not allow for multiple cards of the same type, i.e. multiple disk drive cards or multiple LAN cards. If multiple card capability were supported, individual address blocks for each card would be required, such that if a particular video card requires a 16 k address block, and there were four such video cards, then a 4.times.16 k block of address space would be utilized. Most computers are limited in their total available address space, and may not have sequential or linear address blocks available. This can complicate the board design which is intended to be installed in a computer having multiple copies of the same card. The addressable range may have to be broken into smaller pieces so that it can fit into the address space available on the computer. This not only increases the cost of the board design, but also requires increased complexity in the software which controls the communication with these cards. The existing system makes it difficult, if not impossible, to install more than a few cards of the same type in a computer with the limited address space.
Therefore, there exists a need in the art for a mechanism to allow multiple cards of the same type or different types in combination to be installed in large numbers on common computer buses.
Furthermore, there is a need in the art for a system which has quick and efficient mechanisms to select these cards to avoid unnecessary machine operations and software instructions to select and communicate with the cards.
There is a also a need in the art for a system which will allow multiple cards of the same type to be utilized at the same time without fragmenting the memory and without having the card address memory scattered at various places throughout the memory space.